// pages/cart/cart.js
import { getSetting, chooseAddress, openSetting, showModal, showToast } from '../../utils/asyncWx'
import regeneratorRuntime from '../../lib/runtime/runtime';

Page({

    /**
     * 页面的初始数据
     */
    data: {
        address: {},
        cart: [],
        allChecked: false,
        totalPrice: 0,
        totalNum: 0
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    },
    onShow() {
        // 获取缓存中的收货地址
        const address = wx.getStorageSync('address')
        // 获取缓存中的商品数据
        const cart = wx.getStorageSync('cart') || []
        // 计算全选
        this.setData({
            address
        })
        this.setCart(cart)
    },
    // // 获取收货地址
    // async handleChooseAddress() {
    //     try {
    //         //获取权限状态
    //         const res1 = await getSetting()
    //         const scopeAddress = res1.authSetting["scope.address"]
    //         // 判断权限状态
    //         if (scopeAddress === false) {
    //             // 诱导用户打开权限
    //             await openSetting()
    //             // 调用获取收获地址api
    //             console.log(res2);
    //         }

    //         const address = await chooseAddress()
    //         wx.setStorageSync('address', address)
    //     } catch (error) {
    //         console.log(error);
    //     }



    // }
    // 获取收货地址
    async handleChooseAddress() {
        wx.chooseAddress({
            complete: (res) => {
                wx.setStorageSync('address', res)
            },
        })
    },
    // 修改商品选中状态
    handleItemChange(e) {
        // 获取被修改商品的id
        const goods_id = e.currentTarget.dataset.id
        // 获取购物车数组
        let { cart } = this.data
        // 找到被修改的商品对象
        let index = cart.findIndex(v => v.goods_id === goods_id)
        // 选中状态反选
        cart[index].checked = !cart[index].checked
        // 把购物车数据重新设置到缓存中
        wx.setStorageSync('cart', cart)
        // 重新计算总价格、总数量。。。
        this.setCart(cart)
    },
    // 计算商品总价格，总数量
    setCart(cart) {
        // 计算全选
        let allChecked = true
        // 总价格 总数量
        let totalPrice = 0
        let totalNum = 0
        cart.forEach(v => {
            if (v.checked) {
                totalPrice += v.num * v.goods_price
                totalNum += v.num
            } else {
                allChecked = false
            }
        })
        // 判断数组是否为空
        allChecked = cart.length != 0 ? allChecked : false
        this.setData({
            cart, allChecked, totalNum, totalPrice
        })
        // 将数据重新设置到缓存中
        wx.setStorageSync('cart', cart)
    },
    // 全选与全不选
    handleItemAllChecked() {
        // 获取data中的数据
        let { cart, allChecked } = this.data
        // 修改值
        allChecked = !allChecked
        // 循环修改商品的选中状态
        cart.forEach(v => v.checked = allChecked)
        // 重新把修改后的值，设置到缓存中
        this.setCart(cart)


    },
    // 修改商品数量
    async handleItemNumedit(e) {
        // 获取传递过来的参数
        const { oprtation, id } = e.currentTarget.dataset
        // 获取data中的数据
        let { cart } = this.data

        // 找到修改商品的索引
        const index = cart.findIndex(v => v.goods_id === id)
        // 修改数量
        if (cart[index].num === 1 && oprtation === -1) {
            // wx.showModal({
            //     content: "是否删除该商品",
            //     success: (res) => {
            //         if (res.confirm) {
            //             cart.splice(index, 1)
            //             this.setCart(cart)
            //         } else if (res.cancel) {

            //         }
            //     }
            // })
            const res = await showModal({ content: '是否删除该商品' })

            if (res.confirm) {
                cart.splice(index, 1)
                this.setCart(cart)
            }

        } else {
            cart[index].num += oprtation

            // 重新把修改后的值，设置到缓存中
            this.setCart(cart)
        }

    },
    async handlePay() {
        // 判断收货地址
        const { address, totalNum } = this.data
        if (!address.userName) {
            await showToast({ title: '您还没有选择收货地址' })
            return;
        }
        // 判断有没有选购商品
        if (totalNum == 0) {
            await showToast({ title: '您还没有选购商品' })
            return;
        }
        wx.navigateTo({
            url: '/pages/pay/pay',

        })
    }


})